"""
LLM提供商模板
演示如何使用提供商注册机制
"""
from typing import Dict, List, Optional, Any, Generator

from ..provider import RemoteProvider
from ..provider_registry import register_provider


@register_provider("template")
class TemplateProvider(RemoteProvider):
	"""模板提供商实现，用于演示如何创建新的提供商"""
	
	def __init__(self, config: Dict[str, Any]):
		"""
		初始化模板提供商
		
		Args:
			config: 配置字典
		"""
		super().__init__(config)
		# 这里可以添加提供商特有的配置和初始化逻辑
		
	def complete(self, messages: List[Dict[str, str]], stream: bool = False) -> str:
		"""
		获取LLM完成
		
		Args:
			messages: 消息列表
			stream: 是否使用流式响应
			
		Returns:
			完成的文本
		"""
		if stream:
			return "".join(list(self.complete_stream(messages)))
		
		# 在实际实现中，这里应该调用提供商的API
		return "这是模板提供商的响应"
		
	def complete_stream(self, messages: List[Dict[str, str]]) -> Generator[str, None, None]:
		"""
		获取LLM流式完成
		
		Args:
			messages: 消息列表
			
		Returns:
			流式响应生成器
		"""
		# 在实际实现中，这里应该调用提供商的流式API
		chunks = ["这是", "模板", "提供商", "的", "流式", "响应"]
		for chunk in chunks:
			yield chunk
	
	def extract_reasoning(self, data: Dict[str, Any]) -> Optional[str]:
		"""
		从响应数据中提取思考过程
		
		Args:
			data: 响应数据
			
		Returns:
			思考过程文本，如果不存在则返回None
		"""
		# 在实际实现中，这里应该处理提供商特有的响应格式
		if "reasoning" in data:
			return data["reasoning"]
		return None
